Various types of development applications exist that software developers may use to develop software. An integrated development environment (IDE) is a type of software development application that contains several development tools in one package. An IDE may include tools such as a source code editor, a build automation tool, and a debugger. Examples of IDEs include Eclipse™ developed by Eclipse Foundation of Ottawa, Canada, ActiveState Komodo™ developed by ActiveState of Vancouver, Canada, IntelliJ IDEA developed by JetBrains of the Czech Republic, Oracle JDeveloper™ developed by Oracle Corporation of Redwood City, Calif., NetBeans developed by Oracle Corporation, Codenvy™ developed by Codenvy of San Francisco, Calif., Xcode® developed by Apple Corporation of Cupertino, Calif., and Microsoft® Visual Studio®, developed by Microsoft Corporation of Redmond, Wash.
In a typical software development, a developer may modify a small part of a large application program. The developer may rebuild (e.g., recompile and link) the modified application in a release mode so that the developer can test the change. A release mode build typically uses whole program optimizations where the entire application is analyzed and inter-procedural information is used to generate machine code which is highly performant. Currently, many compilers, such as C/C++ compilers, when performing such whole program optimizations, have to recompile all the functions in an application even if only one or a few of the functions have been modified. Having to rebuild an entire application even when minor changes are made to the application leads to long build times that adversely affect developer productivity.